Many of today's computing systems are implemented as distributed systems, with a plurality of nodes spread across a diverse geographical area, all coupled together via one or more networks. With a distributed system, it is quite desirable to be able to manage a node remotely. That way, a system administrator sitting at a single console can manage the entire system. A variety of remote management systems have been developed for this purpose.
Even with a remote management system, however, the task of managing an entire distributed system can still be quite tedious and daunting. For example, if a distributed system comprises a large number of nodes, and a particular action (e.g. installing a set of software) has to be performed on each node, it may still take the administrator an enormous amount of time to perform the action on every node, even if that action can be carried out remotely.
To ease this burden, a management server has been developed, which allows the performance of tasks on multiple nodes to be automated. With this management server, an administrator creates a job, which includes a task, a set of node selection criteria, and a specified schedule. Using the node selection criteria, the management server determines on which node(s) of the distributed system the task is to be performed. Then, based upon the specified schedule, the management server automatically causes the task to be performed on the selected node(s) at the proper time(s). Such a server greatly eases the burden on a system administrator.
Currently, the management server allows a variety of different types of tasks to be defined and performed. These task types include, for example: (1) a module task type which enables a module on a node to be loaded and unloaded, and enabled and disabled; (2) a module table task type which enables rows on module tables to be created, deleted, and modified; (3) a property task type which allows properties on modules to be modified (e.g. set value, set alarm threshold, set alarm actions, etc.); and (4) a module configuration propagation task type which enables module configuration information to be distributed to multiple modules on multiple nodes. While the currently available task types are quite varied, they are not comprehensive. As new hardware, software, functionalities, etc. are added to the distributed system, new task types may need to be added to enable the management server to manage and control the new components and functionalities.
Currently, the task types are hard-coded into the software of the management server. Thus, to add new task types, the source code of the management server has to be changed, the updated source code has to be compiled, and the management server has to be reinstalled and re-setup.